// pages/medical/index.js
const medicalService = require('../../services/medical');

Page({

  /**
   * 页面的初始数据
   */
  data: {
    petId: null,
    petName: '',
    medicalRecords: [],
    isLoading: true,
    hasMore: false,
    page: 1,
    pageSize: 10
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    if (options.petId) {
      // 如果有宠物ID，加载特定宠物的健康档案
      this.setData({
        petId: options.petId
      });
      
      // 加载宠物名称
      const petInfo = wx.getStorageSync('currentPet');
      if (petInfo && petInfo.id == options.petId) {
        this.setData({
          petName: petInfo.name
        });
        wx.setNavigationBarTitle({
          title: `${petInfo.name}的健康档案`
        });
      }
      
      this.loadMedicalRecords();
    } else {
      // 如果没有宠物ID，设置页面为加载所有宠物健康档案或显示宠物选择列表
      this.setData({
        isLoading: false
      });
      
      wx.setNavigationBarTitle({
        title: '健康档案'
      });
      
      // 后续可以加载用户的所有宠物列表，让用户选择查看哪个宠物的健康档案
      this.loadUserPets();
    }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 如果从添加页面返回，刷新数据
    if (this.data.petId) {
      this.setData({
        page: 1,
        medicalRecords: []
      });
      this.loadMedicalRecords();
    }
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.setData({
      page: 1,
      medicalRecords: []
    });
    this.loadMedicalRecords();
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    if (this.data.hasMore) {
      this.loadMoreRecords();
    }
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  /**
   * 加载健康档案记录
   */
  loadMedicalRecords() {
    this.setData({ isLoading: true });
    
    medicalService.getPetMedicalRecords(this.data.petId)
      .then(res => {
        console.log('获取健康档案成功:', res);
        this.setData({
          medicalRecords: res || [],
          isLoading: false,
          hasMore: (res && res.length >= this.data.pageSize)
        });
        wx.stopPullDownRefresh();
      })
      .catch(err => {
        console.error('获取健康档案失败', err);
        this.setData({ 
          isLoading: false,
          medicalRecords: []
        });
        wx.stopPullDownRefresh();
        wx.showToast({
          title: '获取健康档案失败',
          icon: 'none'
        });
      });
  },
  
  /**
   * 加载更多记录
   */
  loadMoreRecords() {
    if (this.data.isLoading) return;
    
    this.setData({
      isLoading: true,
      page: this.data.page + 1
    });
    
    medicalService.getPetMedicalRecords(this.data.petId, this.data.page)
      .then(res => {
        console.log('加载更多健康档案成功:', res);
        if (res && res.length > 0) {
          this.setData({
            medicalRecords: [...this.data.medicalRecords, ...res],
            hasMore: res.length >= this.data.pageSize
          });
        } else {
          this.setData({ hasMore: false });
        }
        this.setData({ isLoading: false });
      })
      .catch(err => {
        console.error('加载更多健康档案失败', err);
        this.setData({ 
          isLoading: false,
          page: this.data.page - 1
        });
        wx.showToast({
          title: '加载更多记录失败',
          icon: 'none'
        });
      });
  },
  
  /**
   * 跳转到健康档案详情
   */
  navigateToDetail(e) {
    const id = e.currentTarget.dataset.id;
    wx.navigateTo({
      url: `/pages/medical/detail?id=${id}`
    });
  },
  
  /**
   * 添加健康档案
   */
  navigateToAdd() {
    wx.navigateTo({
      url: `/pages/medical/add?petId=${this.data.petId}`
    });
  },
  
  /**
   * 加载用户的宠物列表
   */
  loadUserPets() {
    // 这里可以调用宠物列表API，但现在我们使用简单的提示
    wx.showToast({
      title: '请从宠物详情页进入',
      icon: 'none',
      duration: 2000
    });
    
    // 延迟返回
    setTimeout(() => {
      wx.switchTab({
        url: '/pages/index/index'
      });
    }, 2000);
  },

  /**
   * 导航到宠物列表页面
   */
  navigateToPetList() {
    wx.navigateTo({
      url: '/pages/pet/index'
    });
  }
})